package com.kefu.smartCall.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotEmpty;
import java.io.Serializable;

@Data
@TableName(value="sc_task_call")
@ApiModel(description = "外呼任务拨打记录")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ScTaskCall implements Serializable {
    /**
     * 主键
     */
    @TableId(value="task_call_id")
    @NotEmpty
    @ApiModelProperty(value = "主键")
    private String taskCallId;

    /**
     * 租户
     */
    @TableField(value = "tenant_id")
    @ApiModelProperty(value = "租户", name = "tenantId")
    private String tenantId;

    /**
     * 任务
     */
    @TableField(value = "task_id")
    @ApiModelProperty(value = "任务", name = "taskId")
    private String taskId;

    /**
     * 任务名
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "任务名", name = "taskName")
    private String taskName;

    /**
     * 话术模板
     */
    @TableField(value = "template_id")
    @ApiModelProperty(value = "话术模板", name = "templateId")
    private String templateId;

    /**
     * 模板名称
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "模板名称", name = "templateName")
    private String templateName;

    /**
     * 呼叫通话id
     */
    @TableField(value = "call_channel_id")
    @ApiModelProperty(value = "呼叫通话id", name = "callChannelId")
    private String callChannelId;

    /**
     * 拨打结果
     */
    @TableField(value = "call_status")
    @ApiModelProperty(value = "拨打结果 0未拨打，1拨打中，2已接通，3无人接听", name = "callStatus")
    private Integer callStatus;

    /**
     * 拨打次数
     */
    @TableField(value = "call_count")
    @ApiModelProperty(value = "拨打次数", name = "callCount")
    private Integer callCount;

    /**
     * 拨打时间
     */
    @TableField(value = "call_time")
    @ApiModelProperty(value = "拨打时间", name = "callTime")
    private Long callTime;

    /**
     * 响铃时间
     */
    @TableField(value = "ringing_time")
    @ApiModelProperty(value = "响铃时间", name = "ringingTime")
    private Long ringingTime;

    /**
     * 接通时间
     */
    @TableField(value = "answer_time")
    @ApiModelProperty(value = "接通时间", name = "answerTime")
    private Long answerTime;

    /**
     * 挂断时间
     */
    @TableField(value = "hang_up_time")
    @ApiModelProperty(value = "挂断时间", name = "hangUpTime")
    private Long hangUpTime;

    /**
     * 通话时长
     */
    @TableField(value = "call_duration")
    @ApiModelProperty(value = "通话时长，秒", name = "callDuration")
    private Integer callDuration;

    /**
     * 主叫号码
     */
    @TableField(value = "caller_number")
    @ApiModelProperty(value = "主叫号码", name = "callerNumber")
    private String callerNumber;

    /**
     * 被叫号码
     */
    @TableField(value = "callee_number")
    @ApiModelProperty(value = "被叫号码", name = "calleeNumber")
    private String calleeNumber;

    /**
     * 客户电话
     */
    @TableField(value = "call_telephone")
    @ApiModelProperty(value = "客户电话", name = "callTelephone")
    private String callTelephone;

    /**
     * 通话语音地址
     */
    @TableField(value = "call_voice_url")
    @ApiModelProperty(value = "通话语音地址", name = "callVoiceUrl")
    private String callVoiceUrl;

    /**
     * 用户变量
     */
    @TableField(value = "user_variable")
    @ApiModelProperty(value = "用户变量", name = "userVariable")
    private String userVariable;

    /**
     * 是否转接人工 0否，1是
     */
    @TableField(value = "turn_type")
    @ApiModelProperty(value = "是否转接人工 0否，1是", name = "turnType")
    private Integer turnType;

    /**
     * 意向类型，1-6对应a-f
     */
    @TableField(value = "intention_type")
    @ApiModelProperty(value = "意向类型，1-6对应a-f", name = "intentionType")
    private Integer intentionType;

    /**
     * 意向名称
     */
    @TableField(value = "intention_name")
    @ApiModelProperty(value = "意向名称", name = "intentionName")
    private String intentionName;

    /**
     * 用户回复数
     */
    @TableField(value = "user_msg_count")
    @ApiModelProperty(value = "用户回复数", name = "userMsgCount")
    private Integer userMsgCount;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    @ApiModelProperty(value = "创建时间", name = "createTime")
    private Long createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time")
    @ApiModelProperty(value = "更新时间", name = "updateTime")
    private Long updateTime;

    /**
     * 挂机类型
     */
    @TableField(value = "hang_up_leg")
    @ApiModelProperty(value = "挂机类型", name = "hangUpLeg")
    private String hangUpLeg;

    /**
     * 合作方数据id
     */
    @ApiModelProperty(value = "合作方数据id", name = "partnerDataId")
    private String partnerDataId;

    /**
     * 类型
     */
    @ApiModelProperty(value = "智能外呼1，智能呼入2", name = "callType")
    private Integer callType;

    /**
     * 最后节点名称
     */
    @ApiModelProperty(value = "最后节点名称", name = "lastNodeName")
    private String lastNodeName;

    /**
     * 标签
     */
    @ApiModelProperty(value = "标签",notes = "多个用逗号隔开", name = "tags")
    private String tags;

    /**
     * 最后消息时间
     */
    @ApiModelProperty(value = "最后消息时间")
    private Long lastMsgTime;

    /**
     * 大模型筛选状态
     */
    @TableField(value = "search_status")
    @ApiModelProperty(value = "大模型筛选状态 0=未选，-1=不通过，1=通过", name = "searchState")
    private Integer searchStatus;
    private static final long serialVersionUID = 1L;
}